package tests;

import static org.junit.Assert.*;
import junit.framework.TestCase;

import oo.Input;
import oo.Maquina;
import oo.Output;
import oo.Robot;
import oo.Sistema;

import org.junit.Test;

public class Robot_TEST extends TestCase{
	Robot r1 = new Robot(1);
	Robot r2 = new Robot(2);
	Robot r3 = new Robot(3);
	
	Input i1 = new Input(1,10);
	Input i2 = new Input(2,2);
	Input i3 = new Input(3,3);
	
	Maquina m1 = new Maquina(1);
	Maquina m2 = new Maquina(2);
	Maquina m3 = new Maquina(3);
	Maquina m4 = new Maquina(4);
	
	Output o1 = new Output(1,11);
	Output o2 = new Output(2,18);
	Output o3 = new Output(3,15);
	
	Sistema s = new Sistema (r1,r2,r3,i1,i2,i3,m1, m2, m3,m4,o1,o2,o3);

	@Test
	public void test1_cargar() {
		r1.cargar(i1, m1);
		r1.cargar(i1, m1);
	//	assertFalse(m1.getEstado());
		assertFalse(s.getEstadoMaquina(1));
	}
	@Test
	public void test2_cargar() {
		r1.cargar(i1, m1);
		assertFalse(m1.getEstado_lugar1());
	}
	@Test
	public void test3_cargar() {
		r1.cargar(i1, m1);
		assertEquals(9, i1.getPiezas());
	}
	
	@Test
	public void test1_descargar() {
		r1.cargar(i1, m1);
		r1.descargar(o1, m1, 1);
		assertEquals(12, o1.getPiezas());
	}
	@Test
	public void test2_descargar() {
		r1.cargar(i1, m1);
		r1.cargar(i1, m1);
		r1.descargar(o1, m1, 1);
		//assertTrue(m1.getEstado());
		assertTrue(s.getEstadoMaquina(1));
	}
	@Test
	public void test3_descargar() {
		r1.cargar(i1, m1);
		r1.cargar(i1, m1);
		r1.descargar(o1, m1, 1);
		assertFalse(m1.getEstado_lugar2());
	}
	@Test
	public void test1_trasladar() {
		r1.cargar(i1, m1);
		r1.trasladar(m1, m2, 1);
		assertFalse(m2.getEstado_lugar1());
	}
	@Test
	public void test2_trasladar() {
		r1.cargar(i1, m1);
		r1.trasladar(m1, m2, 1);
		assertTrue(s.getEstadoMaquina(1));
	}
}
